home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Language/OS - Multiplatform Resource Library
/
LANGUAGE OS.iso
/
lisp
/
kcl
/
kcl.lha
/
h
/
vs.h
< prev
Wrap
Text File
|
1987-06-04
|
1KB
|
56 lines
/*
(c) Copyright Taiichi Yuasa and Masami Hagiya, 1984. All rights reserved.
Copying of this file is authorized to users who have executed the true and
proper "License Agreement for Kyoto Common LISP" with SIGLISP.
*/
/*
vs.h
value stack
*/
/*
#define VSSIZE 2048
*/
/* value stack size */
#define VSGETA 128 /* value stack geta */
object value_stack[VSSIZE + 2*VSGETA];
#define vs_org value_stack
object *vs_limit; /* value stack limit */
object *vs_base; /* value stack base */
object *vs_top; /* value stack top */
#define vs_push(obje) (*vs_top++ = (obje))
#define vs_pop (*--vs_top)
#define vs_head vs_top[-1]
#define vs_mark object *old_vs_top = vs_top
#define vs_reset vs_top = old_vs_top
#define vs_check if (vs_top >= vs_limit) \
vs_overflow()
#define vs_check_push(obje) \
(vs_top >= vs_limit ? \
(object)vs_overflow() : (*vs_top++ = (obje)))
#define check_arg(n) \
if (vs_top - vs_base != (n)) \
check_arg_failed(n)
#define MMcheck_arg(n) \
if (vs_top - vs_base < (n)) \
too_few_arguments(); \
else if (vs_top - vs_base > (n)) \
too_many_arguments()
#define vs_reserve(x) if(vs_base+(x) >= vs_limit) \
vs_overflow();